/*
 * Copyright 2004-2006 公司名
 * 本软件及其所有拷贝的名称，与光盘上或本软件中注明的公司同在。
 * 本软件及文档享有版权，并受国家版权法及国际协约条款的保护。
 * 您不可以从本软件中去掉其版权声明；并保证为本软件的拷贝（本部或部分）复制版权声明。
 * 您同意制止以任何形式非法拷贝本软件及文档。
 * 版权信息参见：
 *      http://www.companyname.cn/licenses
 */

package com.companyname.common.viewframe.valid;

import java.util.List;
import java.util.Vector;

import javax.servlet.http.HttpServletRequest;

import org.apache.log4j.Logger;

import com.companyname.common.viewframe.manager.ColumnManager;
import com.companyname.common.viewframe.model.Column;

import com.companyname.common.util.mvc.valid.UserValidator;
import com.companyname.common.util.mvc.valid.ValidatedResult;

/**
 * <p>Title: 栏目</p>
 * <p>Description: 栏目 Column </p>
 * <p>Copyright: Copyright (c) 2004-2006</p>
 * <p>Company: 公司名</p>
 * @ $Author: 作者名 $
 * @ $Date: 创建日期 $
 * @ $Revision: 1.0 $
 * @ created in 创建日期
 *
 */

public class DelColumnsValidator extends UserValidator
{
        static Logger logger = Logger.getLogger(DelColumnsValidator.class);

        /**
         * 批量删除前的校验
         *
         * @ param: HttpServletRequest request
         * @ param: ValidatedResult vr 校验结果存放器
         * @ param: String[] params 配置参数
         */

        public void validing(HttpServletRequest request,ValidatedResult vr,String[] params)
        {
                logger.info("开始进行栏目删除前校验");
                String[] ids = request.getParameterValues("ids");
                StringBuffer sb = new StringBuffer(ids.length * 8);// 错误信息
                ColumnManager columnManager = (ColumnManager)this.getBean("columnManager");
                List columns = new Vector(ids.length);
                for(int i = 0; i < ids.length; i ++)
                {
                        Column column = (Column)columnManager.get(ids[i]);
                        if(column.getSubColumns().size() > 0)
                        {
                                sb.append(column.getName());
                                sb.append(" ");
                        }
                        else
                        {
                                columns.add(column);
                        }
                }

                String errMess = sb.toString();
                if(errMess.length() != 0)
                {
                        // 将错误信息封装给校验结果器
                        logger.debug("输出校验失败信息");
                        vr.setErrMess("ids","必须先删除 " + errMess + " 下面的子栏目");
                }
                else
                {
                        // 校验成功,执行删除操作
                        logger.debug("校验成功,继续");
                        request.setAttribute(Column.class.getName(),columns); // 给DelServices使用
                }
        }

}
